package com.view;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.validation.constraints.NotNull;

import com.type.TipoFacturaEnum;
import com.validators.ObjectSelected;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class FacturacionView extends BaseView {

	@NotNull(message = "Valor requerido")
	private TipoFacturaEnum tipoFactura;

	@NotNull(message = "Valor requerido")
	private Date fecha;

	private Date fechaCreacion;

	private BigDecimal neto;

	private BigDecimal iva;

	@NotNull(message = "Valor requerido")
	private BigDecimal total;

	@ObjectSelected(message = "Debe seleccionar un cliente")
	private ClienteView cliente;

	private String numero;

	private String nombreArchivo;

	private List<FacturacionDetalleView> listaFacturacionDetalle;

	// private UploadedFile archivo;

	public FacturacionView(Long id, TipoFacturaEnum tipoFactura, Date fecha,
			Date fechaCreacion, BigDecimal neto, BigDecimal iva,
			BigDecimal total, ClienteView cliente, String numero,
			String nombreArchivo,
			List<FacturacionDetalleView> listaFActuracionDetalle) {
		this.id = id;
		this.tipoFactura = tipoFactura;
		this.fecha = fecha;
		this.fechaCreacion = fechaCreacion;
		this.neto = neto;
		this.iva = iva;
		this.total = total;
		this.cliente = cliente;
		this.numero = numero;
		this.nombreArchivo = nombreArchivo;
		this.listaFacturacionDetalle = listaFActuracionDetalle;
	}

	public FacturacionView() {
		this(null, TipoFacturaEnum.A, null, new Date(), null, null, null, null,
				null, null, new ArrayList<FacturacionDetalleView>());
	}

	public TipoFacturaEnum getTipoFactura() {
		return tipoFactura;
	}

	public void setTipoFactura(TipoFacturaEnum tipoFactura) {
		this.tipoFactura = tipoFactura;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public BigDecimal getNeto() {
		return neto;
	}

	public void setNeto(BigDecimal neto) {
		this.neto = neto;
	}

	public BigDecimal getIva() {
		return iva;
	}

	public void setIva(BigDecimal iva) {
		this.iva = iva;
	}

	public BigDecimal getTotal() {
		return total;
	}

	public void setTotal(BigDecimal total) {
		this.total = total;
	}

	public ClienteView getCliente() {
		return cliente;
	}

	public void setCliente(ClienteView cliente) {
		this.cliente = cliente;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getNombreArchivo() {
		return nombreArchivo;
	}

	public void setNombreArchivo(String nombreArchivo) {
		this.nombreArchivo = nombreArchivo;
	}

	public List<FacturacionDetalleView> getListaFacturacionDetalle() {
		return listaFacturacionDetalle;
	}

	public void setListaFacturacionDetalle(
			List<FacturacionDetalleView> listaFacturacionDetalle) {
		this.listaFacturacionDetalle = listaFacturacionDetalle;
	}

}
